% THIS IS SIGPROC-SP.TEX - VERSION 3.1
% WORKS WITH V3.2SP OF ACM_PROC_ARTICLE-SP.CLS
% APRIL 2009
%
% It is an example file showing how to use the 'acm_proc_article-sp.cls' V3.2SP
% LaTeX2e document class file for Conference Proceedings submissions.
% ----------------------------------------------------------------------------------------------------------------
% This .tex file (and associated .cls V3.2SP) *DOES NOT* produce:
%       1) The Permission Statement
%       2) The Conference (location) Info information
%       3) The Copyright Line with ACM data
%       4) Page numbering
% ---------------------------------------------------------------------------------------------------------------
% It is an example which *does* use the .bib file (from which the .bbl file
% is produced).
% REMEMBER HOWEVER: After having produced the .bbl file,
% and prior to final submission,
% you need to 'insert'  your .bbl file into your source .tex file so as to provide
% ONE 'self-contained' source file.
%
% Questions regarding SIGS should be sent to
% Adrienne Griscti ---> griscti@acm.org
%
% Questions/suggestions regarding the guidelines, .tex and .cls files, etc. to
% Gerald Murray ---> murray@hq.acm.org
%
% For tracking purposes - this is V3.1SP - APRIL 2009

\documentclass{acm_proc_article-sp}

\usepackage{cite}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{url}
\usepackage{enumerate}
\usepackage{flushend} 

\newcommand{\commentout}[1]{}

\newcommand{\yyy}[1]{\textbf{[Note: #1]}} 

\begin{document}

\title{Experience Project Report}
\subtitle{Modelling Bicycle Computer Modes Using Xtext and Xtend}


%
% You need the command \numberofauthors to handle the 'placement
% and alignment' of the authors beneath the title.
%
% For aesthetic reasons, we recommend 'three authors at a time'
% i.e. three 'name/affiliation blocks' be placed beneath the title.
%
% NOTE: You are NOT restricted in how many 'rows' of
% "name/affiliations" may appear. We just ask that you restrict
% the number of 'columns' to three.
%
% Because of the available 'opening page real-estate'
% we ask you to refrain from putting more than six authors
% (two rows with three columns) beneath the article title.
% More than six makes the first-page appear very cluttered indeed.
%
% Use the \alignauthor commands to handle the names
% and affiliations for an 'aesthetic maximum' of six authors.
% Add names, affiliations, addresses for
% the seventh etc. author(s) as the argument for the
% \additionalauthors command.
% These 'additional authors' will be output/set for you
% without further effort on your part as the last section in
% the body of your article BEFORE References or any Appendices.

\numberofauthors{2} %  in this sample file, there are a *total*
% of EIGHT authors. SIX appear on the 'first-page' (for formatting
% reasons) and the remaining two appear in the \additionalauthors section.
%
\author{
% You can go ahead and credit any number of authors here,
% e.g. one 'row of three' or two rows (consisting of one row of three
% and a second row of one, two or three).
%
% The command \alignauthor (no curly braces needed) should
% precede each author name, affiliation/snail-mail address and
% e-mail address. Additionally, tag each line of
% affiliation/address with \affaddr, and tag the
% e-mail address with \email.
%
\alignauthor
Oleksii Kononenko\\
       \affaddr{School of Computer Science}\\
       \affaddr{University of Waterloo}\\
       \affaddr{Waterloo, Ontario, Canada}\\
       \email{okononen@uwaterloo.ca}
\alignauthor
Taha Rafiq\\
       \affaddr{School of Computer Science}\\
       \affaddr{University of Waterloo}\\
       \affaddr{Waterloo, Ontario, Canada}\\
       \email{t2rafiq@uwaterloo.ca}
}

\maketitle
\begin{abstract}

Model-based software engineering becomes popular nowadays, and domain experts become more involved in process of creating embedded software systems. These changes create the need for tools that are able to help people in applying model-based approaches to software development. To gain experience in practical usage of such approaches we studied two tools. We created a software system for a bicycle computer domain. The system consists of domain specific language, code generator, and a framework with core functionality. We provide the description of how the tools were used, as well as share our experience and thoughts about them.


\end{abstract}

% A category with the (minimum) three required fields
%\category{H.4}{Information Systems Applications}{Miscellaneous}
%A category including the fourth, optional field follows...
%\category{D.2.8}{Software Engineering}{Metrics}[complexity measures, performance measures]

%\terms{Theory}

%\keywords{ACM proceedings, \LaTeX, text tagging} % NOT required for Proceedings

\input{report_intro}

\input{report_tech}

\input{report_dsl}

\input{report_transformation}

\input{report_framework}

\input{report_exp}



\section{Conclusions}
\label{sec:conclusion}
The purpose of this experience project was to get hands-on experience of a Model-Based Software Engineering (MBSE) tool and apply it to the problem of modelling a bicycle computer in an extensible manner. The tools we used for our study were Xtext (for meta-modelling) and Xtend (for code generation). In order to accomplish our goal, we developed the core of the bicycle computer using Java, in a manner that allowed mode functions to be `plugged in' in a hassle-free manner. We further designed and implemented a DSL and a textual modelling tool using Xtext in order to ease the task of creating bicycle computer mode functions. Finally, we implemented a code generator that transformed our textual models into target source code that could be integrated into our bicycle computer core directly, without any modification.

We gained valuable insight into the process of MBSE as a result of this project. We experienced how an MBSE technology can be used to simplify the task of development using models that are intuitive to the application domain. Although the bicycle computer system was a simple example, it helped us learn the key abstractions that need to be made in order to develop the metamodel of a DSL, generate code from models and incorporate the generated code into an existing system.

For the purpose of our project, it helped greatly that Xtext and Xtend are well maintained, community driven open-source projects. Even though we faced some difficulties in accomplishing our goals, we felt that learning about a cutting-edge MBSE tool was worth the effort. The experience helped us learn how to look at problems in a new light. Rather than simply writing code to solve a particular problem, we learned that domain-specific modelling tools can be designed and created which are tailored to the needs of a particular domain. These tools can be re-used and configured to automate the `programming' aspect of development. 

Overall our evaluation of Xtext and Xtend is very positive. Looking at the usefulness and power of these tools, we believe they are likely to be around in the years to come as MBSE tools and technologies mature and are adopted increasingly by members of the Software Engineering community.


%
% The following two commands are all you need in the
% initial runs of your .tex file to
% produce the bibliography for the citations in your paper.
\bibliographystyle{abbrv}
\bibliography{report}  % sigproc.bib is the name of the Bibliography in this case
% You must have a proper ".bib" file
%  and remember to run:
% latex bibtex latex latex
% to resolve all references
%
% ACM needs 'a single self-contained file'!
%

%\balancecolumns

%\balancecolumns
% That's all folks!
\end{document}
